package TrabajoPractico;
import java.util.ArrayList;
import java.util.List;

public class FormatoFlexible extends Formato {
	
			private List<Formato> formatos;

			public FormatoFlexible(){
				formatos= new ArrayList<Formato>();
		    }
			
			public void incorporarFormato(Formato formatoNuevo){
				formatos.add(formatoNuevo);
		    }
		
			public String formatoDeParseo() {
			return null;
		    }
		
			public String formatoAIngresar() {
				return null;
			}
			
			
			//Devuelve una instancia de Fecha de acuerdo al String pasado como parametro
			
			public Fecha crearFecha(String cadenaFecha) throws NoReconoceCadena{
				try{
					for(Formato formato:formatos){
						if(formato.reconoce(cadenaFecha)){
							return (formato.crearFecha(cadenaFecha));
							
						}
					}
				throw new NoExisteFormatoQueReconozca();
				}
				catch(NoExisteFormatoQueReconozca e){
					throw new NoReconoceCadena("La cadena ingresada no puede ser transformada a fecha" +
							": El formato flexible no contiene ningun formato estandar que pueda parsear la cadena.");
					
				}
				
			}
	
			//Determina si algun formato perteneciente a la coleccion de la instancia de FormatoFlexible reconoce la cadena enviada como parametro
			
			public boolean reconoce(String cadenaFecha){
				boolean reconoce=false;
				for(Formato formato:formatos){
					if(formato.reconoce(cadenaFecha)){
						reconoce=true;	
					}
				}
			return reconoce;
		    }
			

}	









